正在加载中...
主题
死锁发生在多个线程相互等待对方释放锁时。比如说线程 1 持有锁 R1,等待锁 R2;线程 2 持有锁 R2,等待锁 R1。
互斥条件:资源同一时间只能被一个进程使用。
请求与保持: 进程已经持有资源,又去请求别的资源,且不释放已占有的。
不可抢占:资源只能由持有它的进程主动释放,不能被强行抢走。
循环等待:进程之间形成一个环形等待链:A 等 B,B 等 C,C 等 A。
第一,所有线程都按照固定的顺序来申请资源。例如,先申请 R1 再申请 R2。
第二,如果线程发现无法获取某个资源,可以先释放已经持有的资源,重新尝试申请。